技術問答
技術文章
iT 徵才
Tag
聊天室
2024 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2023 iThome 鐵人賽
DAY
30
0
AI & Data
AI白話文運動系列之「A!給我那張Image!」
系列 第
30
篇
AI研究趨勢討論(四)--AI圖像生成(以Diffusion Model為例)
15th鐵人賽
理工哈士奇嗷嗚嗷嗚
2023-10-15 21:29:30
1351 瀏覽
分享至
前言
今天我們來聊聊最近很熱門的AI繪圖技術,帶大家看一下背後到底用了甚麼原理,這幾年又有怎麼的演進才可以到現在有這麼厲害的技術。
先備知識
知道生成模型是甚麼(可以回顧:
https://ithelp.ithome.com.tw/articles/10323078
)
對AE系列有基礎的認識(可以回顧:
https://ithelp.ithome.com.tw/articles/10334832
;
https://ithelp.ithome.com.tw/articles/10335396
)
知道甚麼是機率分布與抽樣(可以回顧:
https://ithelp.ithome.com.tw/articles/10336031
)
看完今天的內容你可能會知道......
圖像生成任務是甚麼
主流圖像生成模型有哪些
GAN與VAE各有甚麼優缺點
甚麼是Diffusion Model
一、圖像生成模型概述
先前我們介紹過自編碼器Autoencoder系列,那時有提到Variational Autoencoder,也就是VAE,可以做為生成模型使用(
https://ithelp.ithome.com.tw/articles/10336031
)。我們只需要從一個高斯分布中隨機抽樣出某些點,將這些點送入VAE的解碼器(Decoder)中,就可以獲得經過VAE生成出來的圖片了。這樣從無到有,又或者是從無意義的東西變成有意義的東西過程,就是生成。
除了透過自編碼器的做法以外,圖像生成一直以來還有個非常強大的模型:GAN,也就是上圖第二項的架構,由於今天的主角不是他,所以我們只簡單敘述一下他的做法:可以看到GAN有兩個主要的部分:判別器(Discriminator))與生成器(Generator),前者的目的在於判斷輸入圖像是否「正常」,後者則在於生成「正常」的圖像。整個流程就是我們把隨機的、任意的樣本(通常取自高斯分布)送入生成器產生出圖像,接著再把這些圖像送入判別器判斷生成圖像的好壞,不斷這樣來回博弈、相互更新,最終就可獲得一個非常厲害的生成器,可以產生出我們希望的圖像。這樣的過程很常被形容成警察跟做假鈔的故事,警察要學會如何辨別一張鈔票是否為假鈔,而嫌犯要盡可能做出可以騙過警察,足以以假亂真的假鈔。
所以簡單總結一下這兩種模型(AE系列與GAN系列)的做法,都是從一個充滿隨機性的噪音(也就是高斯分布)開始,經由模型,直接生成出符合我們目標的圖像。這種感覺就像是要你從下圖中的藍點畫一條線連接到紅點一樣
中途的路徑跟畫法可以有很多種,根據出發點的不同又會產生出不一樣的軌跡,就像下圖一樣:
由於這樣的過程有太多的不確定性,所以生成模型演變到後來,都會發展出一些新的架構,讓模型可以通過不同的輸入條件控制生成的走向。
二、圖像生成黃金三角
圖像生成模型有三個重要的關鍵:「速度、圖像品質、多樣性」,其中的速度指的是模型生成一張圖片的快慢,而多樣性指的是經過模型生成出來的圖片是否都是同樣的或是類似的。一個好的生成模型,我們會需要它可以在上面三個關鍵都做得很好,不過,這很難,畢竟這就像你要馬兒好又要馬兒不吃草。
以上面介紹過的GAN來說,他的生成速度很快,生成出來的圖片品質也不錯,可是因為是跟判別器兩相博弈的結果,所以多樣性會受到限制。而VAE的話,則是勝在生成速度快,多樣性又高,可是因為沒有受到控制或限制,所以圖像品質沒有GAN那麼好。
三、Diffusion Model介紹
剛剛介紹完了兩種主要的圖像生成模型,他們各有各的優缺點,分別佔據了黃金三角型的兩個邊,接下來我們要介紹的就是佔據第三個邊的生成模型:Diffusion Model,中文目前翻譯是擴散模型。我們以最經典的Denoising Diffusion Probabilistic Models
(DDPM)架構來介紹,論文可以參考:
https://arxiv.org/pdf/2006.11239.pdf
。
DDPM提出了一個非常有趣的架構,核心概念如下圖所示,如果說前面的GAN與VAE都是直接由藍點連接到紅點,過程可能千奇百怪,那麼,我能不能在這樣的過程中設下一些標註點?讓模型不需要一次直接學習藍點到紅點,而是逐步逐步的學習,一次只學習兩個標註點之間的過程就好,這樣既可以有效地引導模型,又不會產生太多限制,所以雖然這樣的過程比較久,但卻可以有更好的圖像品質與多樣性。
現在知道了核心想法是甚麼了,那麼,我們來思考一下,上面我提到的「引導」指的是甚麼,DDPM跟GAN還有VAE一樣都是接受一個噪音訊號(高斯分布)的輸入,然後需要生成出我們要的圖片。可是,我們只知道高斯分布跟我們想要的圖片分布長甚麼樣子(也就是只認識藍點跟紅點),我要怎麼生出中間的所有標註點(黃點)呢?這就是論文標題中「Denoising」的由來了,如果我知道藍點跟紅點,那我就看我中間需要設多少的標註點,接著按照比例將藍點與紅點混合就好了,越靠近藍點的,藍點的比例越多,越靠近紅點的,紅點的比例越多。因為藍點其實就是噪音,所以我們手動設定的這個過程,就是「真實圖片一步步變成噪音的過程」,所以,模型真正需要學的就是反過來的,「由噪音變成真實圖片的過程」,或者也可以說是「去除噪音」的過程。
通過這樣的方法,可以讓模型根據我們的引導,學著逐步從噪音生成出我們想要的圖片,過程非常的簡單明瞭,效果卻非常強大,在DDPM出來的隔年,就有團隊接著發表論文,宣稱在圖像品質方面,Diffusion Model的效果已經打敗了傳統霸主GAN了。現在知名的AI繪圖技術Stable Diffusion也是使用這樣的架構,加上了一些魔法,讓使用者可以添加條件進去影響圖片的生成。
四、總結
今天我們主要在討論圖像生成任務,快速的帶大家看了一下曾經的兩大巨頭:GAN與VAE,也藉由圖像生成中的三個關鍵指標衍伸討論最新的圖像生成模型:Diffusion Model。這幾天的內容都是說故事居多,希望用簡短的篇幅讓大家瞭解這幾年有哪些熱門的技術與研究領域。
留言
追蹤
檢舉
上一篇
AI研究趨勢討論(三)--強強聯手打造新世代里程碑(CNN與ViT結合)
系列文
AI白話文運動系列之「A!給我那張Image!」
共
30
篇
目錄
RSS系列文
訂閱系列文
1
人訂閱
26
AI研究趨勢討論(一)--模型壓縮與加速(Model Compression and Acceleration)前篇
27
AI研究趨勢討論(一)--模型壓縮與加速(Model Compression and Acceleration)後篇
28
AI研究趨勢討論(二)--遷移學習、領域自適應與領域泛化
29
AI研究趨勢討論(三)--強強聯手打造新世代里程碑(CNN與ViT結合)
30
AI研究趨勢討論(四)--AI圖像生成(以Diffusion Model為例)
完整目錄
直播研討會
{{ item.subject }}
{{ item.channelVendor }}
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
1064
組
團體組數
40
組
累計文章數
22198
篇
完賽人數
602
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
windows server
linux
css
react
vue.js
熱門問題
如何讓在中國的同事可以穩定的使用台灣總部的系統服務
熟識南投軟體工程師推薦
Web Application 與Web Service 的差異
如何練國考資訊題?
求救,erp 無法使用,ping封包 100% 丟失
Active Directory 環境中時間無法同步問題
如何以php抓取html文件的特定元素,並且依照抓取順序填入頁碼
fortigate 60E 配IP給無限AP問題
電腦版Outlook 封存郵件無法包含有作標幟的郵件
switch 指令的應用
熱門回答
如何讓在中國的同事可以穩定的使用台灣總部的系統服務
求救,erp 無法使用,ping封包 100% 丟失
Active Directory 環境中時間無法同步問題
熟識南投軟體工程師推薦
如何以php抓取html文件的特定元素,並且依照抓取順序填入頁碼
熱門文章
大總結 - Win11 是對企業和私人的大改版
卷 31:iThome 鐵人賽寫作攻略——新手必看指南
每日一篇學習筆記 直到我做完專題 :( [Day1]
每日一篇學習筆記 直到我做完專題 :( [Day2]
Python 字串string 方法,zfill() & f"{i:0xd}" &浮點數格式化
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}